1
Những sai lầm trong quản lý bộ nhớ thủ công
AI013Lesson 5
00:00

Quản lý bộ nhớ thủ công thông qua newdelete tạo ra một "hợp đồng trách nhiệm". Nhà phát triển phải dự đoán chính xác mọi luồng thực thi—bao gồm các lệnh trả về sớm và ngoại lệ—để đảm bảo tài nguyên được giải phóng. Cách tiếp cận này dễ dẫn đến những lỗi hệ thống.

Những lỗi hệ thống

  • Bẫy rò rỉ (Leakage Trap): Trong các cấu trúc logic phức tạp (if-else, switch), việc không ghép mỗi new với delete sẽ làm suy giảm hiệu suất hệ thống theo thời gian.
  • Sự vô hiệu hóa con trỏ: Lỗi như Con trỏ treo (Dangling Pointers) (truy cập bộ nhớ sau khi đã xóa) hoặc Giải phóng kép (Double Frees) gây ra hành vi không xác định và các lỗ hổng bảo mật.
  • An toàn với ngoại lệ: Nếu một ngoại lệ xảy ra giữa quá trình cấp phát và giải phóng, thì delete sẽ bị bỏ qua hoàn toàn.
new char[]XTrả về sớm (rò rỉ)XNgoại lệ (rò rỉ)Các thiết bị xử lý ()• std::unique_ptr• std::shared_ptr• std::weak_ptr

Sự Phát triển

C++11/14 đã cải tiến header <memory> để hướng tới các mô hình sở hữu tự động, thay vì dùng các con trỏ trần, giúp đảm bảo an toàn ngay tại mức biên dịch viên.

main.py
TERMINALbash — 80x24
> Ready. Click "Run" to execute.
>